package core.thread;

/**
 * 多线程引入和介绍
 *
 * @author
 * @create 2018-12-24 17:02
 **/
public class mythread_1_thread_Introduce {
    /**
     * 多线程引入
     * 1、什么是多线程
     *      线程是程序执行的一条路径，一个进程中可以包含多条线程
     *      多线程并发执行可以提高程序的效率，可以同时完成多项工作
     *
     * 2、多线程的应用场景
     *      红蜘蛛同时共享屏幕给多个电脑
     *      迅雷开启多条线程一起下载
     *      服务器同时处理多个客户端请求
     *
     *
     * 多线程并行和并发的区别
     * 1、并行是两个任务同时运行，就是甲任务进行的同时乙任务也在运行，需要多核CPU
     * 2、并发是指两个任务都请求运行，而处理器只能接受一个任务，就把这两个任务安排轮流进行，由于时间间隔较短，使人感觉两个任务都在运行
     * 3、我跟两个网友聊天，左手操作电脑，有时操作手机，这叫并行
     * 4、先给电脑发消息，再给手机发消息这叫并发
     *
     *
     * Java程序运行原理和JVM的启动是多线程的吗
     * 1、Java程序运行原理
     *      Java命令会启动java虚拟机，启动JVM，等于启动了一个应用程序，也就是启动了一个进程，该进程会自动启动一个“主线程”，然后主线程去调用某个类的main方法
     *
     * 2、JVM的启动是多线程的吗
     *      JVM的启动至少启动了垃圾回收线程和主线程，所以是多线程的
     */
    public static void main(String[] args) {
        for(int i=0;i<100000;i++){
            new Demo();
        }

        for(int i=0;i<100000;i++){
            System.out.println("我是主线程的执行代码");
        }
    }
}

class Demo{
    @Override
    protected void finalize() throws Throwable {
        System.out.println("垃圾被清扫了");
    }
}
